Computer systems may include a concept of virtual memory where the processes, program instructions, and/or data reside and/or operate in a memory that is virtual (e.g., a memory created by using a non-volatile storage device to simulate additional random-access memory). The allocation and/or mapping of virtual memory address to actual physical memory address can be performed by the operating system at run time.
When operating in virtual memory mode, programmers may not need to be aware of the amount of physical memory in a computer. Furthermore, programmers may not need to be aware of the exact location of physical memory that they might use. Due to hardware limitations, the physical memory that can be used by the virtual address space (e.g., virtual memory) of a computer program has been limited to the physical boundaries of the computer system. This limitation becomes a serious problem when it is required to combine and/or cluster resources of various physically separate computer systems without making modifications to user programs because user programs operate in virtual address space that can utilize only the physical memory available on that computer. The same issue may also prevent operating systems and their kernel component on each computer to seamlessly share useful resources at an operating system level (e.g., file system cache, idle processors, I/O devices etc.)